//package com.example.test;
//
//import com.alibaba.fastjson.JSON;
//
//import javax.xml.bind.DatatypeConverter;
//import java.security.MessageDigest;
//import java.util.Arrays;
//import java.util.List;
//import java.util.TreeMap;
//
//public class ReqDedup {
//    public static void main(String[] args) {
//        //两个请求一样，但是请求时间差一秒
//        String req = "{\n" +
//                "\"requestTime\" :\"20190101120001\",\n" +
//                "\"requestValue\" :\"1000\",\n" +
//                "\"requestKey\" :\"key\"\n" +
//                "}";
//
//        String req2 = "{\n" +
//                "\"requestTime\" :\"20190101120002\",\n" +
//                "\"requestValue\" :\"1000\",\n" +
//                "\"requestKey\" :\"key\"\n" +
//                "}";
//
//        //全参数比对，所以两个参数MD5不同
//        String dedupMD5 = new ReqDedupHelper().dedupParamMD5(req);
//        String dedupMD52 = new ReqDedupHelper().dedupParamMD5(req2);
//        System.out.println("req1MD5 = " + dedupMD5 + " , req2MD5=" + dedupMD52);
//
//        //去除时间参数比对，MD5相同
//        String dedupMD53 = new ReqDedupHelper().dedupParamMD5(req, "requestTime");
//        String dedupMD54 = new ReqDedupHelper().dedupParamMD5(req2, "requestTime");
//        System.out.println("req1MD5 = " + dedupMD53 + " , req2MD5=" + dedupMD54);
//
//    }
//}
//
//class ReqDedupHelper {
//
//    /**
//     * @param reqJSON     请求的参数，这里通常是JSON
//     * @param excludeKeys 请求参数里面要去除哪些字段再求摘要
//     * @return 去除参数的MD5摘要
//     */
//    public String dedupParamMD5(final String reqJSON, String... excludeKeys) {
//        String decreptParam = reqJSON;//业余草，公众号
//
//        TreeMap paramTreeMap = JSON.parseObject(decreptParam, TreeMap.class);
//        if (excludeKeys != null) {
//            List<String> dedupExcludeKeys = Arrays.asList(excludeKeys);
//            if (!dedupExcludeKeys.isEmpty()) {
//                for (String dedupExcludeKey : dedupExcludeKeys) {
//                    paramTreeMap.remove(dedupExcludeKey);
//                }
//            }
//        }
//
//        String paramTreeMapJSON = JSON.toJSONString(paramTreeMap);
//        String md5deDupParam = jdkMD5(paramTreeMapJSON);
//        System.out.println("md5deDupParam = " + md5deDupParam + ", excludeKeys = " + Arrays.deepToString(excludeKeys) + " " + paramTreeMapJSON);
//        return md5deDupParam;
//    }
//
//    private static String jdkMD5(String src) {
//        String res = null;
//        try {
//            MessageDigest messageDigest = MessageDigest.getInstance("MD5");
//            byte[] mdBytes = messageDigest.digest(src.getBytes());
//            res = DatatypeConverter.printHexBinary(mdBytes);
//        } catch (Exception e) {
//            System.out.println(e);
//        }
//        return res;
//    }
//}
